#!/bin/bash

# 检查参数数量
if [ "$#" -ne 2 ]; then
  echo "用法: $0 <设备> <挂载点>"
  echo "示例: $0 /dev/sdb /yisi/im/mount"
  exit 1
fi

# 脚本设置
DEVICE="$1"            # 从参数获取设备
MOUNT_POINT="$2"      # 从参数获取挂载点
PARTITION="${DEVICE}1"

# 检查是否以root用户运行
if [ "$(id -u)" -ne 0 ]; then
  echo "请以root用户运行此脚本"
  exit 1
fi

# 查看块设备信息
echo "查看块设备信息:"
lsblk

# 检查分区是否已存在
if [ -e "$PARTITION" ]; then
  echo "分区 $PARTITION 已存在，跳过创建分区。"
else
  # 创建分区
  echo "创建分区中..."
  (
    echo n  # 创建新分区
    echo p  # 主分区
    echo 1  # 分区号
    echo    # 默认起始扇区
    echo    # 默认结束扇区
    echo w  # 保存分区表
  ) | fdisk "$DEVICE"

  # 检查分区是否创建成功
  if [ $? -ne 0 ]; then
    echo "分区创建失败！"
    exit 1
  fi
fi

# 格式化分区为FAT32
echo "格式化分区为FAT32..."
mkfs.vfat -F 32 "$PARTITION"

# 检查挂载点是否存在
if [ ! -d "$MOUNT_POINT" ]; then
  echo "创建挂载点 $MOUNT_POINT..."
  mkdir -p "$MOUNT_POINT"
else
  echo "挂载点 $MOUNT_POINT 已存在，跳过创建。"
fi


# 检查分区是否已挂载
if mount | grep "on $MOUNT_POINT type vfat" > /dev/null; then
  echo "分区 $PARTITION 已挂载到 $MOUNT_POINT，跳过挂载。"
else
  # 挂载分区
  echo "挂载分区..."
  mount "$PARTITION" "$MOUNT_POINT"

  # 检查挂载是否成功
  if [ $? -ne 0 ]; then
    echo "挂载失败！"
    exit 1
  fi
fi

# 设置开机自动挂载
echo "设置开机自动挂载..."
if ! grep -q "$PARTITION" /etc/fstab; then
  echo "$PARTITION  $MOUNT_POINT  vfat  defaults  0  0" >> /etc/fstab
  echo "已添加到 /etc/fstab。"
else
  echo "挂载信息已存在于 /etc/fstab 中，跳过添加。"
fi

# 测试是否正确
echo "测试挂载配置..."
mount -a

if [ $? -eq 0 ]; then
  echo "挂载配置测试成功！"
else
  echo "挂载配置测试失败！"
  exit 1
fi

echo "操作完成！"
